package simulateOS.management.computerInterface;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import simulateOS.entity.PCB;
import simulateOS.entity.Process;


/**
 * Description：提供给计算机调用内存的接口
 * Date: 2022/9/26
 * Time: 23:49
 *
 * @Author SillyBaka
 **/
public interface MemoryInterface {
    /**
     * 获得空白进程控制块
     * @return
     */
    PCB getFreePCB();

    /**
     * 进程或者可执行文件 申请内存空间
     * @param process 进程
     */
    void getMemory(Process process);

    /**
     * 释放目标进程占有的内存空间
     * @param process 目标进程
     */
    void releaseMemory(Process process);

    /**
     * 回收目标进程控制块在内存中占有的空间
     * @param pcb 目标内存控制块
     */
    void releasePCB(PCB pcb);
}